<?php
/**
 * Created by PhpStorm.
 * User: Season
 * Date: 2018/10/10
 * Time: 15:31
 */

namespace app\lib\exception;
use think\exception\Handle;
use think\Log;
use think\Request;

class ExceptionHandler extends Handle
{
    private  $code;
    private  $msg;
    private  $errorCode;
    //需要返回客户端当前请求的URL路径
    //\Exception是所有Exception的基类
    public function render(\Exception $e){
        if($e instanceof  BaseException){
            //如果是自定义的异常
            $this->code = $e->code;
            $this->msg = $e->msg;
            $this->errorCode = $e->errorCode;
        }
        else{
            if(config ('app_debug')){
                return parent::render ($e);
            }else{
                $this->code = 500;
                $this->msg = $e->getMessage ();
                $this->errorCode = 999;
                $this->recordErrorLog ($e);
            }
        }
        $request = Request::instance ();
        $result = [
            'msg'=>$this->msg,
            'error_code'=>$this->errorCode,
            'request_url'=>$request->url(),
        ];
        return json ($result,$this->code);
    }

    public function recordErrorLog(\Exception $e){
        Log::init ([
            'type' => 'File',
            'path' => LOG_PATH,
            'level' => ['error']
                   ]);
        Log::record ($e->getMessage (),'error');
    }
}